package cockpit.comm.DTO;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class UsuarioDTO
{
    public static Boolean COMPRADOR = true;
    public static Boolean VENDEDOR = false;

    public static int ESTADO_ACTIVADO = 1;
    public static int ESTADO_DESACTIVADO = 0;

    public static int TIPO_COMPRADOR = 1;
    public static int TIPO_VENDEDOR = 0;

    // --------------------------------------------------------------------
    // Atributos
    // --------------------------------------------------------------------
    private long idUsuario;

    private String email;

    private String password;

    private String lastLogin;

    private String nombre;

    private String apellido;

    private String direccion;

    private String telefono;

    /**
     * Tipo de usuario: true = comprador False= vendedor
     */
    private Boolean tipoUsuario;

    // --------------------------------------------------------------------
    // Constructors
    // --------------------------------------------------------------------

    public UsuarioDTO( )
    {
    }

    /**
     * 
     */
    public UsuarioDTO( long idUsuario, String email, String password, String lastLogin, String nombre, String apellido, String direccion, String telefono, Boolean tipoUsuario )
    {
        super( );
        this.idUsuario = idUsuario;
        this.email = email;
        this.password = password;
        this.lastLogin = lastLogin;
        this.nombre = nombre;
        this.apellido = apellido;
        this.direccion = direccion;
        this.telefono = telefono;
        this.tipoUsuario = tipoUsuario;
    }

    public UsuarioDTO( ResultSet resultSet ) throws SQLException, DatosException
    {
        try
        {
            Long varlongUsuario = resultSet.getLong( "idUsuarios" );
            if( varlongUsuario != null )
                setIdUsuario( varlongUsuario );

            if( resultSet.getString( "email" ) != null )
            {
                String varEmail = resultSet.getString( "email" );
                setEmail( varEmail );
            }

            if( resultSet.getString( "password" ) != null )
            {
                String varPassword = resultSet.getString( "password" );
                setPassword( varPassword );
            }

            if( resultSet.getString( "lastLogin" ) != null )
            {
                String varLastLogin = resultSet.getString( "lastLogin" );
                setLastLogin( varLastLogin );
            }

            // if( resultSet.getString( "nombre" ) != null )
            // {
            // String varNombre = resultSet.getString( "nombre" );
            // setNombre( varNombre );
            // }
            //
            // if( resultSet.getString( "apellido" ) != null )
            // {
            // String varApellido = resultSet.getString( "apellido" );
            // setApellido( varApellido );
            // }
            //
            // if( resultSet.getString( "direccion" ) != null )
            // {
            // String varDireccion = resultSet.getString( "direccion" );
            // setDireccion( varDireccion );
            // }
            //
            // if( resultSet.getString( "telefono" ) != null )
            // {
            // String varTelefono = resultSet.getString( "telefono" );
            // setTelefono( varTelefono );
            // }
            //
            // if( resultSet.getString( "tipoUsuario" ) != null )
            // {
            // int varTipoUsuario = resultSet.getInt( "tipoUsuario" );
            //
            // if( varTipoUsuario == 1 )
            // {
            // setTipoUsuario( COMPRADOR );
            // }
            // else
            // {
            // setTipoUsuario( VENDEDOR );
            //
            // InfoVendedorDTO tmpInfovendedor = new InfoVendedorDTO( resultSet );
            // setInfoVendedor( tmpInfovendedor );
            // }
            // }
        }
        catch( Exception e )
        {
            throw new DatosException( "Error en la captura de datos UsuarioDTO: " + e.getMessage( ) );
        }
    }

    // --------------------------------------------------------------------
    // Metodos get and set
    // --------------------------------------------------------------------

    public long getIdUsuario( )
    {
        return idUsuario;
    }
    public void setIdUsuario( long idUsuario )
    {
        this.idUsuario = idUsuario;
    }

    public String getEmail( )
    {
        return email;
    }

    public void setEmail( String email )
    {
        this.email = email;
    }

    public String getPassword( )
    {
        return password;
    }

    public void setPassword( String password )
    {
        this.password = password;
    }

    public String getLastLogin( )
    {
        return lastLogin;
    }

    public void setLastLogin( String lastLogin )
    {
        this.lastLogin = lastLogin;
    }

    public String getNombre( )
    {
        return nombre;
    }

    public void setNombre( String nombre )
    {
        this.nombre = nombre;
    }

    public String getApellido( )
    {
        return apellido;
    }

    public void setApellido( String apellido )
    {
        this.apellido = apellido;
    }

    public String getDireccion( )
    {
        return direccion;
    }

    public void setDireccion( String direccion )
    {
        this.direccion = direccion;
    }

    public String getTelefono( )
    {
        return telefono;
    }

    public void setTelefono( String telefono )
    {
        this.telefono = telefono;
    }

    public Boolean getTipoUsuario( )
    {
        return tipoUsuario;
    }

    public void setTipoUsuario( Boolean tipoUsuario )
    {
        this.tipoUsuario = tipoUsuario;
    }

    public static ArrayList<UsuarioDTO> getUsuariosResultSet( ResultSet resultSet ) throws SQLException, DatosException
    {

        ArrayList<UsuarioDTO> usuarios = new ArrayList<UsuarioDTO>( );
        while( resultSet.next( ) )
        {
            UsuarioDTO usuario = new UsuarioDTO( resultSet );

            usuarios.add( usuario );
        }
        return usuarios;
    }

    public static UsuarioDTO UsuarioDTOBasic( ResultSet resultSet ) throws DatosException
    {
        UsuarioDTO usu = new UsuarioDTO( );
        try
        {
            Long varlongUsuario = resultSet.getLong( "idUsuarios" );
            if( varlongUsuario != null )
                usu.setIdUsuario( varlongUsuario );

            if( resultSet.getString( "email" ) != null )
            {
                String varEmail = resultSet.getString( "email" );
                usu.setEmail( varEmail );
            }

            if( resultSet.getString( "password" ) != null )
            {
                String varPassword = resultSet.getString( "password" );
                usu.setPassword( varPassword );
            }

            if( resultSet.getString( "lastLogin" ) != null )
            {
                String varLastLogin = resultSet.getString( "lastLogin" );
                usu.setLastLogin( varLastLogin );
            }

            // if( resultSet.getString( "nombre" ) != null )
            // {
            // String varNombre = resultSet.getString( "nombre" );
            // setNombre( varNombre );
            // }
            //
            // if( resultSet.getString( "apellido" ) != null )
            // {
            // String varApellido = resultSet.getString( "apellido" );
            // setApellido( varApellido );
            // }
            //
            // if( resultSet.getString( "direccion" ) != null )
            // {
            // String varDireccion = resultSet.getString( "direccion" );
            // setDireccion( varDireccion );
            // }
            //
            // if( resultSet.getString( "telefono" ) != null )
            // {
            // String varTelefono = resultSet.getString( "telefono" );
            // setTelefono( varTelefono );
            // }
            //
            // if( resultSet.getString( "tipoUsuario" ) != null )
            // {
            // int varTipoUsuario = resultSet.getInt( "tipoUsuario" );
            //
            // if( varTipoUsuario == 1 )
            // {
            // setTipoUsuario( COMPRADOR );
            // }
            // else
            // {
            // setTipoUsuario( VENDEDOR );
            //
            // InfoVendedorDTO tmpInfovendedor = new InfoVendedorDTO( resultSet );
            // setInfoVendedor( tmpInfovendedor );
            // }
            // }
            return usu;
        }
        catch( Exception e )
        {
            throw new DatosException( "Error en la captura de datos UsuarioDTO: " + e.getMessage( ) );
        }

    }

    public static UsuarioDTO UsuarioDTOComprador( ResultSet resultSet ) throws DatosException
    {
        UsuarioDTO usu = new UsuarioDTO( );
        try
        {
            Long varlongUsuario = resultSet.getLong( "idUsuarios" );
            if( varlongUsuario != null )
                usu.setIdUsuario( varlongUsuario );

            if( resultSet.getString( "email" ) != null )
            {
                String varEmail = resultSet.getString( "email" );
                usu.setEmail( varEmail );
            }

            if( resultSet.getString( "password" ) != null )
            {
                String varPassword = resultSet.getString( "password" );
                usu.setPassword( varPassword );
            }

            if( resultSet.getString( "lastLogin" ) != null )
            {
                String varLastLogin = resultSet.getString( "lastLogin" );
                usu.setLastLogin( varLastLogin );
            }

            if( resultSet.getString( "nombre" ) != null )
            {
                String varNombre = resultSet.getString( "nombre" );
                usu.setNombre( varNombre );
            }

            if( resultSet.getString( "apellido" ) != null )
            {
                String varApellido = resultSet.getString( "apellido" );
                usu.setApellido( varApellido );
            }

            if( resultSet.getString( "direccion" ) != null )
            {
                String varDireccion = resultSet.getString( "direccion" );
                usu.setDireccion( varDireccion );
            }

            if( resultSet.getString( "telefono" ) != null )
            {
                String varTelefono = resultSet.getString( "telefono" );
                usu.setTelefono( varTelefono );
            }
            return usu;
        }
        catch( Exception e )
        {
            throw new DatosException( "Error en la captura de datos UsuarioDTO: " + e.getMessage( ) );
        }

    }

    @Override
    public String toString( )
    {
        // TODO Auto-generated method stub
        return email + " " + nombre;
    }

}
